package org.groupg.practice;

import org.mapdb.*;

import java.io.File;
import java.util.Map;
import java.util.concurrent.ConcurrentMap;

public class FileStorageExample {
    public static void main(String[] args) {
        File file = new File("./build/db/");
        file.mkdirs();
        // 创建文件数据库
        DB db = DBMaker.fileDB(new File("./build/db/myDatabase.db"))
                .fileMmapEnable() // 启用内存映射
                .closeOnJvmShutdown() // JVM关闭时自动关闭
                .make();

        // 创建或打开映射
        ConcurrentMap<Integer, String> map = db.hashMap("userMap")
                .keySerializer(Serializer.INTEGER)
                .valueSerializer(Serializer.STRING)
                .createOrOpen();

        // 添加数据
        map.put(1, "Alice");
        map.put(2, "Bob");
        map.put(3, "Charlie");

        // 提交更改
        db.commit();

        // 读取并打印所有数据
        System.out.println("Users in database:");
        map.forEach((id, name) -> System.out.println(id + ": " + name));

        // 关闭数据库
        db.close();
    }
}
